home *** CD-ROM | disk | FTP | other *** search
- Changes as of 19-JUL-1987
-
- I got this code from Fish disk number 65. Although the program is well
- written it did not run on the Amiga. I set out to get it running and have
- by now, as usual, spent far to much time on it. I release this update in the
- hope that someone else will do some work on it.
-
- I going to say a lot of negative things about Bawk here. This should not
- taken as critisism against the original author. As I said above the program
- was well written and it was fun to work with it. The characteristics of
- the original program is 'almost correct, easy to understand, but slow'.
- I much prefer to work with such code as compared to 'fast but buggy' code.
-
- Although you may not believe it at first, there is really a lot of
- functionality in this program. However; Bawk is not awk. There is a lot of
- functionality lacking, and Bawk is also slower. You can be the one to
- change all that... 8-)
-
- Here are the some differences between awk and Bawk.
-
- Regular expressions in Bawk are delimited by '@', not '/':
- @[Ff]oo@
-
- The function 'print' is not implemented. You have to get by with 'printf'.
- The reason that print is not yet implemented is that automatic
- conversion between string values and other (e.g. numerical) values is not
- yet implemented.
-
- Assignment between arrays is not automatic. You have to use strcpy:
- Awk: $1 = "foo"
- Bawk: strcpy($1,"foo")
-
- Redirection (printf "%s", $0 >file) is not implemented.
-
- To match a field in awk you can say
- $1 ~ /[Ff]oo/
- in Bawk you say
- match($1,@[Ff]oo@)
-
- Arrays in Bawk are not associative. It would probably be a good idea to
- remove the declarations from Bawk and to make type handling and array
- handling more like awk.
-
-
- Some minor changes:
- Bawk can now take a command line pattern.
- Here are three ways of invoking awk:
-
- $ bawk @[Ff]oo@ file
- $ echo >xxx @[Ff]oo@
- $ bawk -f xxx file
- $ bawk - file
- @[Ff]oo@
- $
-
- The braindamaged parsing of command line arguments on the Amiga forced me
- to define an alternative string delimiter. Strings can now be delimited
- by '`' (`a string`) as well as '"' ("a string"). This behaviour is
- optional. If you do not like it then undefine QUOTE_STRING_HACK in bawk.h.
-
- I have used the Lattice C compiler. Conversion to manx with 32 bit ints
- should be easy. The code assumes that sizeof(int) == sizeof(char *).
-
- I used Fred Fish's dbug package to develop the current version. The name
- dbug is a bit of a misnomer, 'trace' is a more appropriate name. dbug
- implements tracing in an orderly manner. Very useful. The package is
- available on Fish disk 41. An older version is on disk 2.
-
- The trace code is conditionally compiled in depending on the definition
- DBUG_OFF
- To compile with tracing, comment out the definition of DBUG_OFF in bawk.h.
- You can then invoke tracing and dbug printing with
- bawk -\#t:d action file
- Select printing only with
- bawk -\#d action file
- Note that bawk will run slower and be a bit larger if you compile with
- tracing enabled.
-
- Johan Widen
- USENET: jw@sics.se
-